As modern software systems grow in size and complexity, due primarily to continually increasing demands placed upon such systems, the ability to track and monitor execution of the system for failure and performance analysis, as well as for other related purposes, becomes increasingly important, particularly in the realm of business software systems. Consequently, most current software systems employ some type of logging mechanism or facility that provides information concerning, for example, which methods or functions have been executed, the input and output data for these functions or methods, and error or exception conditions that resulted from execution.
Typically, to provide a logging mechanism, additional program instructions, data structures, and the like may be inserted into the software methods of interest to capture the function or method calls, the method-associated input and output data, error conditions, and so on that are used to track or monitor program execution. Oftentimes, the various members of the software design team are responsible for writing and debugging these additional instructions and data structures, typically concentrating on the particular functional code modules that they have developed. At times, building logging code in this manner may lead to redundancy of effort and cost, and possibly an attendant decrease in code developer productivity.